////必须使用初始化表的情况
//#include <iostream>
//#include <cstring>
//
//using namespace std;
//
//
//class Human {
//public:
//
//    Human(int age = 0, const char *name = "匿名", float score = 0)
//            : m_age(age), m_name(name), m_score(score), m_len(strlen(name)) {
//        //[int m_len = strlen(name);]
//        //在this指针指向的内存空间中，定义m_age,初值为随机数
//        //在this指针指向的内存空间中，定义m_name，利用m_name.string()
//        //[const float m_score;],定义m_score，初值为随机数
//        cout << "Human类的缺省构造函数被调用" << endl;
//
//    }
//
//    //自定义拷贝构造函数
//    Human(const Human &that) : m_age(that.m_age), m_name(that.m_name), m_score(that.m_score),
//                               m_len(that.m_name.size()) {
//        //[int m_len = that.m_name.size();]
//
//        //[const float m_score;],定义m_score，初值为that.m_score
//        cout << "Human类的拷贝函数被调用" << endl;
//    }
//
//    void getInfo() {
//        cout << "姓名" << this->m_name << "年龄:" << this->m_age << "成绩:" << this->m_score <<
//             ",名字长度:" << this->m_len << endl;
//    }
//
//private:
//    int m_len;//保存名字字符串的长度
//    int m_age;//基本类型的成员变量
//    string m_name;//类类型的成员变量
//    const float m_score;//常量型的成员变量
//};
//
//int main(void) {
//    cout << "-------------------h2创建的信息--------------------" << endl;
//    Human h2(22, "张飞", 88.5);//定义h2,利用h2.Human(22,"张飞");
//    h2.getInfo();
//    cout << "-------------------h3创建的信息--------------------" << endl;
//    Human h3(h2);//=h2；的定义h3,利用h3.Human(h2)
//    h3.getInfo();
//
//    return 0;
//}
//
